package com.goldmantis.alitrip.pojo;

import io.swagger.annotations.*;
import com.goldmantis.alitrip.common.annotation.*;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

@Table(name = "sys_org")
@ApiModel("sys_org")
public class SysOrg {
    /**
     * 组织ID
     */
    @Id
    @Column(name = "ORGID")
    @Display("组织ID")
    @ApiModelProperty(value = "组织ID")
    @NotNull
    private Long orgid;

    /**
     * 维度编号
     */
    @Column(name = "DEMID")
    @Display("维度编号")
    @ApiModelProperty("维度编号")
    private Long demid;

    /**
     * 名称
     */
    @Column(name = "ORGNAME")
    @Display("名称")
    @ApiModelProperty("名称")
    @NotNull
    @Size(min = 0, max = 128 , message = "长度必须在{min}和{max}之间")
    private String orgname;

    /**
     * 描述
     */
    @Column(name = "ORGDESC")
    @Display("描述")
    @ApiModelProperty("描述")
    @Size(min = 0, max = 500 , message = "长度必须在{min}和{max}之间")
    private String orgdesc;

    /**
     * 上级
     */
    @Column(name = "ORGSUPID")
    @Display("上级")
    @ApiModelProperty("上级")
    private Long orgsupid;

    /**
     * 路径
     */
    @Column(name = "PATH")
    @Display("路径")
    @ApiModelProperty("路径")
    @Size(min = 0, max = 128 , message = "长度必须在{min}和{max}之间")
    private String path;

    /**
     * 层次
     */
    @Column(name = "DEPTH")
    @Display("层次")
    @ApiModelProperty("层次")
    private Long depth;

    /**
     * 类型
            0=集团
            1=公司
            2=部门
            3=其他组织
     */
    @Column(name = "ORGTYPE")
    @Display("类型            0=集团            1=公司            2=部门            3=其他组织")
    @ApiModelProperty("类型            0=集团            1=公司            2=部门            3=其他组织")
    private Long orgtype;

    /**
     * 建立人
     */
    @Column(name = "CREATORID")
    @Display("建立人")
    @ApiModelProperty("建立人")
    private Long creatorid;

    /**
     * 建立时间
     */
    @Column(name = "CREATETIME")
    @Display("建立时间")
    @ApiModelProperty("建立时间")
    private Date createtime;

    /**
     * 修改人
     */
    @Column(name = "UPDATEID")
    @Display("修改人")
    @ApiModelProperty("修改人")
    private Long updateid;

    /**
     * 修改时间
     */
    @Column(name = "UPDATETIME")
    @Display("修改时间")
    @ApiModelProperty("修改时间")
    private Date updatetime;

    @Column(name = "SN")
    private Long sn;

    /**
     * 数据来源
     */
    @Column(name = "FROMTYPE")
    @Display("数据来源")
    @ApiModelProperty("数据来源")
    private Short fromtype;

    /**
     * 组织名称路径
     */
    @Column(name = "ORGPATHNAME")
    @Display("组织名称路径")
    @ApiModelProperty("组织名称路径")
    @Size(min = 0, max = 2000 , message = "长度必须在{min}和{max}之间")
    private String orgpathname;

    /**
     * 删除标志，0正常，1删除
     */
    @Column(name = "is_delete")
    @Display("删除标志，0正常，1删除")
    @ApiModelProperty("删除标志，0正常，1删除")
    private Short isDelete;

    /**
     * 组织代码，自动继承父级代码
     */
    @Display("组织代码，自动继承父级代码")
    @ApiModelProperty("组织代码，自动继承父级代码")
    private Long code;

    /**
     * 公司
     */
    @Column(name = "COMPANYID")
    @Display("公司")
    @ApiModelProperty("公司")
    private Long companyid;

    /**
     * 分公司
     */
    @Column(name = "COMPANY")
    @Display("分公司")
    @ApiModelProperty("分公司")
    @Size(min = 0, max = 20 , message = "长度必须在{min}和{max}之间")
    private String company;

    /**
     * 编制人数
     */
    @Column(name = "ORGSTAFF")
    @Display("编制人数")
    @ApiModelProperty("编制人数")
    private Short orgstaff;

    /**
     * 组织编码
     */
    @Column(name = "ORGCODE")
    @Display("组织编码")
    @ApiModelProperty("组织编码")
    @Size(min = 0, max = 200 , message = "长度必须在{min}和{max}之间")
    private String orgcode;

    /**
     * 部门等级
     */
    @Column(name = "org_levels")
    @Display("部门等级")
    @ApiModelProperty("部门等级")
    private Long orgLevels;

    /**
     * 公司简称
     */
    @Column(name = "org_short_name")
    @Display("公司简称")
    @ApiModelProperty("公司简称")
    @Size(min = 0, max = 255 , message = "长度必须在{min}和{max}之间")
    private String orgShortName;

    /**
     * HRID
     */
    @Column(name = "HRID")
    @Display("HRID")
    @ApiModelProperty("HRID")
    @Size(min = 0, max = 50 , message = "长度必须在{min}和{max}之间")
    private String hrid;

    /**
     * 是否为公司1是0不是
     */
    @Column(name = "is_company")
    @Display("是否为公司1是0不是")
    @ApiModelProperty("是否为公司1是0不是")
    @NotNull
    private Short isCompany;

    /**
     * 部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0
     */
    @Column(name = "is_executed")
    @Display("部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0")
    @ApiModelProperty("部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0")
    private Boolean isExecuted;

    /**
     * 通用维度orgId
     */
    @Column(name = "common_org_id")
    @Display("通用维度orgId")
    @ApiModelProperty("通用维度orgId")
    private Long commonOrgId;

    /**
     * 法人代表
     */
    @Column(name = "legal_person")
    @Display("法人代表")
    @ApiModelProperty("法人代表")
    private Long legalPerson;

    /**
     * 法人代表名称
     */
    @Column(name = "legal_person_name")
    @Display("法人代表名称")
    @ApiModelProperty("法人代表名称")
    @Size(min = 0, max = 200 , message = "长度必须在{min}和{max}之间")
    private String legalPersonName;

    /**
     * 部门类型
     */
    @Column(name = "dep_type")
    @Display("部门类型")
    @ApiModelProperty("部门类型")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String depType;

    /**
     * 部门条线
     */
    @Column(name = "dep_strip_line")
    @Display("部门条线")
    @ApiModelProperty("部门条线")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String depStripLine;

    /**
     * 组织机构类型
     */
    @Column(name = "org_type_name")
    @Display("组织机构类型")
    @ApiModelProperty("组织机构类型")
    @Size(min = 0, max = 255 , message = "长度必须在{min}和{max}之间")
    private String orgTypeName;

    /**
     * 部门等级
     */
    @Column(name = "dep_level")
    @Display("部门等级")
    @ApiModelProperty("部门等级")
    @Size(min = 0, max = 255 , message = "长度必须在{min}和{max}之间")
    private String depLevel;

    /**
     * 部门区域
     */
    @Column(name = "dep_area")
    @Display("部门区域")
    @ApiModelProperty("部门区域")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String depArea;

    /**
     * 地址
     */
    @Display("地址")
    @ApiModelProperty("地址")
    @Size(min = 0, max = 255 , message = "长度必须在{min}和{max}之间")
    private String address;

    /**
     * 电话
     */
    @Display("电话")
    @ApiModelProperty("电话")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String phone;

    @Column(name = "hr_id")
    private Long hrId;

    /**
     * 获取组织ID
     *
     * @return ORGID - 组织ID
     */
    public Long getOrgid() {
        return orgid;
    }

    /**
     * 设置组织ID
     *
     * @param orgid 组织ID
     */
    public void setOrgid(Long orgid) {
        this.orgid = orgid;
    }

    /**
     * 获取维度编号
     *
     * @return DEMID - 维度编号
     */
    public Long getDemid() {
        return demid;
    }

    /**
     * 设置维度编号
     *
     * @param demid 维度编号
     */
    public void setDemid(Long demid) {
        this.demid = demid;
    }

    /**
     * 获取名称
     *
     * @return ORGNAME - 名称
     */
    public String getOrgname() {
        return orgname;
    }

    /**
     * 设置名称
     *
     * @param orgname 名称
     */
    public void setOrgname(String orgname) {
        this.orgname = orgname == null ? null : orgname.trim();
    }

    /**
     * 获取描述
     *
     * @return ORGDESC - 描述
     */
    public String getOrgdesc() {
        return orgdesc;
    }

    /**
     * 设置描述
     *
     * @param orgdesc 描述
     */
    public void setOrgdesc(String orgdesc) {
        this.orgdesc = orgdesc == null ? null : orgdesc.trim();
    }

    /**
     * 获取上级
     *
     * @return ORGSUPID - 上级
     */
    public Long getOrgsupid() {
        return orgsupid;
    }

    /**
     * 设置上级
     *
     * @param orgsupid 上级
     */
    public void setOrgsupid(Long orgsupid) {
        this.orgsupid = orgsupid;
    }

    /**
     * 获取路径
     *
     * @return PATH - 路径
     */
    public String getPath() {
        return path;
    }

    /**
     * 设置路径
     *
     * @param path 路径
     */
    public void setPath(String path) {
        this.path = path == null ? null : path.trim();
    }

    /**
     * 获取层次
     *
     * @return DEPTH - 层次
     */
    public Long getDepth() {
        return depth;
    }

    /**
     * 设置层次
     *
     * @param depth 层次
     */
    public void setDepth(Long depth) {
        this.depth = depth;
    }

    /**
     * 获取类型
            0=集团
            1=公司
            2=部门
            3=其他组织
     *
     * @return ORGTYPE - 类型
            0=集团
            1=公司
            2=部门
            3=其他组织
     */
    public Long getOrgtype() {
        return orgtype;
    }

    /**
     * 设置类型
            0=集团
            1=公司
            2=部门
            3=其他组织
     *
     * @param orgtype 类型
            0=集团
            1=公司
            2=部门
            3=其他组织
     */
    public void setOrgtype(Long orgtype) {
        this.orgtype = orgtype;
    }

    /**
     * 获取建立人
     *
     * @return CREATORID - 建立人
     */
    public Long getCreatorid() {
        return creatorid;
    }

    /**
     * 设置建立人
     *
     * @param creatorid 建立人
     */
    public void setCreatorid(Long creatorid) {
        this.creatorid = creatorid;
    }

    /**
     * 获取建立时间
     *
     * @return CREATETIME - 建立时间
     */
    public Date getCreatetime() {
        return createtime;
    }

    /**
     * 设置建立时间
     *
     * @param createtime 建立时间
     */
    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    /**
     * 获取修改人
     *
     * @return UPDATEID - 修改人
     */
    public Long getUpdateid() {
        return updateid;
    }

    /**
     * 设置修改人
     *
     * @param updateid 修改人
     */
    public void setUpdateid(Long updateid) {
        this.updateid = updateid;
    }

    /**
     * 获取修改时间
     *
     * @return UPDATETIME - 修改时间
     */
    public Date getUpdatetime() {
        return updatetime;
    }

    /**
     * 设置修改时间
     *
     * @param updatetime 修改时间
     */
    public void setUpdatetime(Date updatetime) {
        this.updatetime = updatetime;
    }

    /**
     * @return SN
     */
    public Long getSn() {
        return sn;
    }

    /**
     * @param sn
     */
    public void setSn(Long sn) {
        this.sn = sn;
    }

    /**
     * 获取数据来源
     *
     * @return FROMTYPE - 数据来源
     */
    public Short getFromtype() {
        return fromtype;
    }

    /**
     * 设置数据来源
     *
     * @param fromtype 数据来源
     */
    public void setFromtype(Short fromtype) {
        this.fromtype = fromtype;
    }

    /**
     * 获取组织名称路径
     *
     * @return ORGPATHNAME - 组织名称路径
     */
    public String getOrgpathname() {
        return orgpathname;
    }

    /**
     * 设置组织名称路径
     *
     * @param orgpathname 组织名称路径
     */
    public void setOrgpathname(String orgpathname) {
        this.orgpathname = orgpathname == null ? null : orgpathname.trim();
    }

    /**
     * 获取删除标志，0正常，1删除
     *
     * @return is_delete - 删除标志，0正常，1删除
     */
    public Short getIsDelete() {
        return isDelete;
    }

    /**
     * 设置删除标志，0正常，1删除
     *
     * @param isDelete 删除标志，0正常，1删除
     */
    public void setIsDelete(Short isDelete) {
        this.isDelete = isDelete;
    }

    /**
     * 获取组织代码，自动继承父级代码
     *
     * @return code - 组织代码，自动继承父级代码
     */
    public Long getCode() {
        return code;
    }

    /**
     * 设置组织代码，自动继承父级代码
     *
     * @param code 组织代码，自动继承父级代码
     */
    public void setCode(Long code) {
        this.code = code;
    }

    /**
     * 获取公司
     *
     * @return COMPANYID - 公司
     */
    public Long getCompanyid() {
        return companyid;
    }

    /**
     * 设置公司
     *
     * @param companyid 公司
     */
    public void setCompanyid(Long companyid) {
        this.companyid = companyid;
    }

    /**
     * 获取分公司
     *
     * @return COMPANY - 分公司
     */
    public String getCompany() {
        return company;
    }

    /**
     * 设置分公司
     *
     * @param company 分公司
     */
    public void setCompany(String company) {
        this.company = company == null ? null : company.trim();
    }

    /**
     * 获取编制人数
     *
     * @return ORGSTAFF - 编制人数
     */
    public Short getOrgstaff() {
        return orgstaff;
    }

    /**
     * 设置编制人数
     *
     * @param orgstaff 编制人数
     */
    public void setOrgstaff(Short orgstaff) {
        this.orgstaff = orgstaff;
    }

    /**
     * 获取组织编码
     *
     * @return ORGCODE - 组织编码
     */
    public String getOrgcode() {
        return orgcode;
    }

    /**
     * 设置组织编码
     *
     * @param orgcode 组织编码
     */
    public void setOrgcode(String orgcode) {
        this.orgcode = orgcode == null ? null : orgcode.trim();
    }

    /**
     * 获取部门等级
     *
     * @return org_levels - 部门等级
     */
    public Long getOrgLevels() {
        return orgLevels;
    }

    /**
     * 设置部门等级
     *
     * @param orgLevels 部门等级
     */
    public void setOrgLevels(Long orgLevels) {
        this.orgLevels = orgLevels;
    }

    /**
     * 获取公司简称
     *
     * @return org_short_name - 公司简称
     */
    public String getOrgShortName() {
        return orgShortName;
    }

    /**
     * 设置公司简称
     *
     * @param orgShortName 公司简称
     */
    public void setOrgShortName(String orgShortName) {
        this.orgShortName = orgShortName == null ? null : orgShortName.trim();
    }

    /**
     * 获取HRID
     *
     * @return HRID - HRID
     */
    public String getHrid() {
        return hrid;
    }

    /**
     * 设置HRID
     *
     * @param hrid HRID
     */
    public void setHrid(String hrid) {
        this.hrid = hrid == null ? null : hrid.trim();
    }

    /**
     * 获取是否为公司1是0不是
     *
     * @return is_company - 是否为公司1是0不是
     */
    public Short getIsCompany() {
        return isCompany;
    }

    /**
     * 设置是否为公司1是0不是
     *
     * @param isCompany 是否为公司1是0不是
     */
    public void setIsCompany(Short isCompany) {
        this.isCompany = isCompany;
    }

    /**
     * 获取部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0
     *
     * @return is_executed - 部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0
     */
    public Boolean getIsExecuted() {
        return isExecuted;
    }

    /**
     * 设置部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0
     *
     * @param isExecuted 部门所在流程是否正在执行，人力规划申请功能专用，执行-1，结束-0
     */
    public void setIsExecuted(Boolean isExecuted) {
        this.isExecuted = isExecuted;
    }

    /**
     * 获取通用维度orgId
     *
     * @return common_org_id - 通用维度orgId
     */
    public Long getCommonOrgId() {
        return commonOrgId;
    }

    /**
     * 设置通用维度orgId
     *
     * @param commonOrgId 通用维度orgId
     */
    public void setCommonOrgId(Long commonOrgId) {
        this.commonOrgId = commonOrgId;
    }

    /**
     * 获取法人代表
     *
     * @return legal_person - 法人代表
     */
    public Long getLegalPerson() {
        return legalPerson;
    }

    /**
     * 设置法人代表
     *
     * @param legalPerson 法人代表
     */
    public void setLegalPerson(Long legalPerson) {
        this.legalPerson = legalPerson;
    }

    /**
     * 获取法人代表名称
     *
     * @return legal_person_name - 法人代表名称
     */
    public String getLegalPersonName() {
        return legalPersonName;
    }

    /**
     * 设置法人代表名称
     *
     * @param legalPersonName 法人代表名称
     */
    public void setLegalPersonName(String legalPersonName) {
        this.legalPersonName = legalPersonName == null ? null : legalPersonName.trim();
    }

    /**
     * 获取部门类型
     *
     * @return dep_type - 部门类型
     */
    public String getDepType() {
        return depType;
    }

    /**
     * 设置部门类型
     *
     * @param depType 部门类型
     */
    public void setDepType(String depType) {
        this.depType = depType == null ? null : depType.trim();
    }

    /**
     * 获取部门条线
     *
     * @return dep_strip_line - 部门条线
     */
    public String getDepStripLine() {
        return depStripLine;
    }

    /**
     * 设置部门条线
     *
     * @param depStripLine 部门条线
     */
    public void setDepStripLine(String depStripLine) {
        this.depStripLine = depStripLine == null ? null : depStripLine.trim();
    }

    /**
     * 获取组织机构类型
     *
     * @return org_type_name - 组织机构类型
     */
    public String getOrgTypeName() {
        return orgTypeName;
    }

    /**
     * 设置组织机构类型
     *
     * @param orgTypeName 组织机构类型
     */
    public void setOrgTypeName(String orgTypeName) {
        this.orgTypeName = orgTypeName == null ? null : orgTypeName.trim();
    }

    /**
     * 获取部门等级
     *
     * @return dep_level - 部门等级
     */
    public String getDepLevel() {
        return depLevel;
    }

    /**
     * 设置部门等级
     *
     * @param depLevel 部门等级
     */
    public void setDepLevel(String depLevel) {
        this.depLevel = depLevel == null ? null : depLevel.trim();
    }

    /**
     * 获取部门区域
     *
     * @return dep_area - 部门区域
     */
    public String getDepArea() {
        return depArea;
    }

    /**
     * 设置部门区域
     *
     * @param depArea 部门区域
     */
    public void setDepArea(String depArea) {
        this.depArea = depArea == null ? null : depArea.trim();
    }

    /**
     * 获取地址
     *
     * @return address - 地址
     */
    public String getAddress() {
        return address;
    }

    /**
     * 设置地址
     *
     * @param address 地址
     */
    public void setAddress(String address) {
        this.address = address == null ? null : address.trim();
    }

    /**
     * 获取电话
     *
     * @return phone - 电话
     */
    public String getPhone() {
        return phone;
    }

    /**
     * 设置电话
     *
     * @param phone 电话
     */
    public void setPhone(String phone) {
        this.phone = phone == null ? null : phone.trim();
    }

    /**
     * @return hr_id
     */
    public Long getHrId() {
        return hrId;
    }

    /**
     * @param hrId
     */
    public void setHrId(Long hrId) {
        this.hrId = hrId;
    }


    @Display("部门负责人")
    @ApiModelProperty("部门负责人")
    @Transient
    private String bmfzr;

    @Display("分管领导")
    @ApiModelProperty("分管领导")
    @Transient
    private String fgld;

    public String getBmfzr() {
        return bmfzr;
    }

    public void setBmfzr(String bmfzr) {
        this.bmfzr = bmfzr;
    }

    public String getFgld() {
        return fgld;
    }

    public void setFgld(String fgld) {
        this.fgld = fgld;
    }
}